﻿//using Microsoft.AspNetCore.Mvc;
//using Microsoft.AspNetCore.Mvc.Filters;
//using Newtonsoft.Json;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;

//namespace ITSM.Filter
//{
//    public class UserIdFilter : ActionFilterAttribute
//    {
//        private readonly ITokenHelper _tokenHelper;

//        public UserIdFilter()
//        {
//            _tokenHelper = new TokenHelper();
//        }

//        public UserIdFilter(ITokenHelper tokenHelper)
//        {
//            _tokenHelper = tokenHelper;
//        }

//        //public override void OnActionExecuting(ActionExecutingContext context)
//        //{
//        //    if (context.Controller.GetType().Name== "InspectController")
//        //    {
//        //        if (context.HttpContext.Request.Method == "GET")
//        //        {
//        //            return;
//        //        }
//        //    };
//        //    string token = context.HttpContext.Request.Headers["X-Token"];

//        //    if (!_tokenHelper.ValiToken(token, null))
//        //    {
//        //        context.Result = new UnauthorizedObjectResult(new { StatusCode = 401 });
//        //        return;
//        //    }
//        //}

//        //        public override void OnActionExecuting(ActionExecutingContext context)
//        //        {
//        //            if (context.ActionArguments.Count > 0)
//        //            {
//        //                if (context.ActionArguments.Keys.Any(res => res == "RYD_UserId"))
//        //                {
//        //                    var userId = context.ActionArguments["RYD_UserId"];
//        //#pragma warning disable CS8604 // 引用类型参数可能为 null。
//        //                    if (!_tokenHelper.ValiToken(userId.ToString(), null))
//        //                    {
//        //                        context.Result = new UnauthorizedObjectResult(new { StatusCode = 401 });
//        //                        return;
//        //                    }
//        //                    context.ActionArguments["RYD_UserId"] = _tokenHelper.ValidateToken(context.ActionArguments["RYD_UserId"].ToString());
//        //#pragma warning restore CS8604 // 引用类型参数可能为 null。
//        //                }
//        //                if (context.ActionArguments.Keys.Any(res => res == "RYD_ItId"))
//        //                {
//        //                    var userId = context.ActionArguments["RYD_ItId"];
//        //#pragma warning disable CS8604 // 引用类型参数可能为 null。
//        //                    if (!_tokenHelper.ValiToken(userId.ToString(), null))
//        //                    {
//        //                        context.Result = new UnauthorizedObjectResult(new { StatusCode = 401 });
//        //                        return;
//        //                    }
//        //                    context.ActionArguments["RYD_ItId"] = _tokenHelper.ValidateToken(context.ActionArguments["RYD_ItId"].ToString());

//        //                }
//        //                if (context.ActionArguments.Keys.Any(res => res == "RYD_ToItId"))
//        //                {
//        //                    var userId = context.ActionArguments["RYD_ToItId"];
//        //#pragma warning disable CS8604 // 引用类型参数可能为 null。
//        //                    if (!_tokenHelper.ValiToken(userId.ToString(), null))
//        //                    {
//        //                        context.Result = new UnauthorizedObjectResult(new { StatusCode = 401 });
//        //                        return;
//        //                    }
//        //                    context.ActionArguments["RYD_ToItId"] = _tokenHelper.ValidateToken(context.ActionArguments["RYD_ToItId"].ToString());

//        //                }
//        //                if (context.ActionArguments.Keys.Count > 0)
//        //                {
//        //                    foreach (var item in context.ActionArguments.Values)
//        //                    {
//        //                        if (item == null)
//        //                        {
//        //                            continue;
//        //                        }
//        //                        if (typeof(string)== item.GetType())
//        //                        {
//        //                            continue;
//        //                        }
//        //                        foreach (var item2 in item.GetType().GetProperties())
//        //                        {
//        //                            object? obj = item2.GetValue(item);
//        //                            string objKey = item2.Name;
//        //                            if (objKey == "RYD_UserId"|| objKey == "RYD_ItId"|| objKey == "RYD_ToItId"||objKey=="RYD_Id")
//        //                            {
//        //                                if (obj != null)
//        //                                {

//        //                                    if (!_tokenHelper.ValiToken(obj.ToString(), null))
//        //                                    {
//        //                                        break;
//        //                                    }
//        //                                    item2.SetValue(item, _tokenHelper.ValidateToken(obj.ToString()));
//        //                                }
//        //                            }

//        //                        }
//        //                    }
//        //                }

//        //            }
//        //            base.OnActionExecuting(context);
//        //        }
//    }
//}
